-
-
Notifications
You must be signed in to change notification settings - Fork 33
Add pgrouting 4.0 with postgis3.6, pg18 and osm2pgrouting 3.0 #75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughThis pull request updates the pgRouting Docker build matrix to support PostgreSQL versions 14–18, PostGIS 3.5–3.6, and pgRouting 3.7–4.0, removes obsolete version combinations, adds new pgRouting 4.0.0 support, updates osm2pgrouting to version 3.0.0, and upgrades boost library dependencies to 1.83.0. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
c09884b to
72abc53
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
18-3.6-main/Dockerfile (1)
36-44: Missingapt-mark manual postgresql-18before purge.Unlike the sibling Dockerfiles (
18-3.6-3.7/Dockerfileand18-3.6-3.8/Dockerfile), this file doesn't includeapt-mark manual postgresql-18beforeapt purge -y --autoremove. This could potentially causepostgresql-18to be marked as auto-installed and removed during the purge step.Proposed fix
&& cd / && rm -rf /usr/src/pgrouting \ + && apt-mark manual postgresql-18 \ && apt purge -y --autoremove \
🤖 Fix all issues with AI agents
In @14-3.5-develop/extra/Dockerfile:
- Line 3: The Dockerfile sets ENV OSM2PGROUTING_VERSION but still includes an
obsolete build block for tools/osmium; remove the entire tools/osmium build step
(the sequence starting with "cd ../tools/osmium" through "make install") so the
image builds against osm2pgrouting v3.0.0 without trying to build the removed
tools/osmium directory; keep the existing osm2pgrouting build steps (the
cmake/make sequence for osm2pgrouting) and ensure no other references to
tools/osmium remain.
In @16-3.5-3.8/extra/Dockerfile:
- Line 3: You updated ENV OSM2PGROUTING_VERSION to 3.0.0 but did not document
the breaking changes; update the PR description and repository release notes
(and README or CHANGELOG) to list the breaking changes for osm2pgrouting
3.0.0—specifically the geometry column rename (the_geom → geom), ways table
restructures and column renames/additions (gid → id, osm_id, tag_id, etc.),
ways_vertices_pgr new columns (in_edges, out_edges), and that databases
upgrading from 2.3.8 require a schema migration—and include clear migration
guidance or links to migration scripts/SQL and any commands users must run to
upgrade their schemas safely.
🧹 Nitpick comments (6)
18-3.6-main/extra/Dockerfile (1)
27-32: Osmium tools build is commented out (WIP).Per the PR description, the osmium tools build is temporarily disabled while work continues on building osm2pgrouting extras for PostgreSQL 18. Ensure this is tracked and re-enabled before final release.
Would you like me to open an issue to track re-enabling the osmium tools build for PostgreSQL 18?
16-3.5-4.0/README.md (1)
1-3: Use abbreviated version number for README documentation.The README uses the full semantic version "4.0.0", but based on the established pattern in this project, README documentation should use abbreviated version numbers (e.g., "4.0") for readability, while full semantic versions (e.g., "4.0.0") are reserved for Docker image tags, version.txt files, and docker-compose.yml files.
Based on learnings, the pgRouting/docker-pgrouting project follows this convention consistently.
📝 Suggested revision
-# pgRouting 4.0.0 (pg16) +# pgRouting 4.0 (pg16) -pgRouting Docker image (version 4.0.0) built over [Postgres 16/PostGIS 3.5](https://hub.docker.com/r/postgis/postgis) and dependencies. +pgRouting Docker image (version 4.0) built over [Postgres 16/PostGIS 3.5](https://hub.docker.com/r/postgis/postgis) and dependencies.14-3.5-4.0/README.md (1)
1-3: Use abbreviated version number for README documentation.The README uses the full semantic version "4.0.0", but based on the established pattern in this project, README documentation should use abbreviated version numbers (e.g., "4.0") for readability, while full semantic versions (e.g., "4.0.0") are reserved for Docker image tags, version.txt files, and docker-compose.yml files.
Based on learnings, the pgRouting/docker-pgrouting project follows this convention consistently.
📝 Suggested revision
-# pgRouting 4.0.0 (pg14) +# pgRouting 4.0 (pg14) -pgRouting Docker image (version 4.0.0) built over [Postgres 14/PostGIS 3.5](https://hub.docker.com/r/postgis/postgis) and dependencies. +pgRouting Docker image (version 4.0) built over [Postgres 14/PostGIS 3.5](https://hub.docker.com/r/postgis/postgis) and dependencies.README.md (1)
25-30: Section header may be misleading now that pgRouting 4.0 is included.The section header on line 25 reads "With pgRouting v3:" but now includes pgRouting 4.0 entries. Consider updating the header to something like "With pgRouting releases:" or splitting into separate sections for v3 and v4.
18-3.6-3.8/extra/Dockerfile (2)
5-17: Consider using--no-install-recommendsto reduce image size.Adding
--no-install-recommendsto the apt install commands can reduce the final image size by avoiding unnecessary recommended packages.♻️ Suggested optimization
RUN apt update \ - && apt install -y \ + && apt install -y --no-install-recommends \ libpqxx-7.10 \ - && apt install -y \ + && apt install -y --no-install-recommends \ build-essential \
27-32: Commented osmium tools build acknowledged as WIP.Per the PR description, this is temporarily commented out while working on osm2pgrouting extras for PostgreSQL 18.
Would you like me to open an issue to track re-enabling the osmium tools build once the WIP fixes are complete?
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (91)
.github/workflows/main.yml13-3.5-3.6/README.md13-3.5-3.6/version.txt13-3.5-3.7/README.md13-3.5-3.7/version.txt13-3.5-3.8/README.md13-3.5-3.8/version.txt13-3.5-develop/README.md13-3.5-develop/version.txt13-3.5-main/README.md13-3.5-main/version.txt14-3.5-3.6/README.md14-3.5-3.6/docker-compose.yml14-3.5-3.6/extra/Dockerfile14-3.5-3.6/version.txt14-3.5-3.7/extra/Dockerfile14-3.5-3.8/extra/Dockerfile14-3.5-4.0/Dockerfile14-3.5-4.0/README.md14-3.5-4.0/docker-compose.yml14-3.5-4.0/extra/Dockerfile14-3.5-4.0/version.txt14-3.5-develop/extra/Dockerfile14-3.5-main/extra/Dockerfile15-3.5-3.6/README.md15-3.5-3.6/docker-compose.yml15-3.5-3.6/extra/Dockerfile15-3.5-3.6/version.txt15-3.5-3.7/extra/Dockerfile15-3.5-3.8/extra/Dockerfile15-3.5-4.0/Dockerfile15-3.5-4.0/README.md15-3.5-4.0/docker-compose.yml15-3.5-4.0/extra/Dockerfile15-3.5-4.0/version.txt15-3.5-develop/extra/Dockerfile15-3.5-main/extra/Dockerfile16-3.5-3.6/README.md16-3.5-3.6/docker-compose.yml16-3.5-3.6/extra/Dockerfile16-3.5-3.6/version.txt16-3.5-3.7/extra/Dockerfile16-3.5-3.8/extra/Dockerfile16-3.5-4.0/Dockerfile16-3.5-4.0/README.md16-3.5-4.0/docker-compose.yml16-3.5-4.0/extra/Dockerfile16-3.5-4.0/version.txt16-3.5-develop/extra/Dockerfile16-3.5-main/extra/Dockerfile17-3.5-3.6/README.md17-3.5-3.6/docker-compose.yml17-3.5-3.6/extra/Dockerfile17-3.5-3.6/version.txt17-3.5-3.7/extra/Dockerfile17-3.5-3.8/extra/Dockerfile17-3.5-4.0/Dockerfile17-3.5-4.0/README.md17-3.5-4.0/docker-compose.yml17-3.5-4.0/extra/Dockerfile17-3.5-4.0/version.txt17-3.5-develop/extra/Dockerfile17-3.5-main/extra/Dockerfile18-3.6-3.7/Dockerfile18-3.6-3.7/README.md18-3.6-3.7/docker-compose.yml18-3.6-3.7/extra/Dockerfile18-3.6-3.7/version.txt18-3.6-3.8/Dockerfile18-3.6-3.8/README.md18-3.6-3.8/docker-compose.yml18-3.6-3.8/extra/Dockerfile18-3.6-3.8/version.txt18-3.6-4.0/Dockerfile18-3.6-4.0/README.md18-3.6-4.0/docker-compose.yml18-3.6-4.0/extra/Dockerfile18-3.6-4.0/version.txt18-3.6-develop/Dockerfile18-3.6-develop/README.md18-3.6-develop/docker-compose.yml18-3.6-develop/extra/Dockerfile18-3.6-develop/version.txt18-3.6-main/Dockerfile18-3.6-main/README.md18-3.6-main/docker-compose.yml18-3.6-main/extra/Dockerfile18-3.6-main/version.txtREADME.mdextra/Dockerfile.templateupdate.sh
💤 Files with no reviewable changes (26)
- 16-3.5-3.6/version.txt
- 15-3.5-3.6/README.md
- 13-3.5-3.7/README.md
- 13-3.5-3.8/version.txt
- 13-3.5-main/README.md
- 15-3.5-3.6/docker-compose.yml
- 13-3.5-main/version.txt
- 13-3.5-develop/README.md
- 13-3.5-3.8/README.md
- 13-3.5-3.7/version.txt
- 16-3.5-3.6/README.md
- 16-3.5-3.6/docker-compose.yml
- 13-3.5-develop/version.txt
- 13-3.5-3.6/README.md
- 14-3.5-3.6/docker-compose.yml
- 15-3.5-3.6/extra/Dockerfile
- 13-3.5-3.6/version.txt
- 17-3.5-3.6/docker-compose.yml
- 17-3.5-3.6/README.md
- 14-3.5-3.6/README.md
- 14-3.5-3.6/version.txt
- 15-3.5-3.6/version.txt
- 14-3.5-3.6/extra/Dockerfile
- 17-3.5-3.6/extra/Dockerfile
- 17-3.5-3.6/version.txt
- 16-3.5-3.6/extra/Dockerfile
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: sanak
Repo: pgRouting/docker-pgrouting PR: 69
File: README.md:26-30
Timestamp: 2025-05-02T14:13:52.206Z
Learning: In the pgRouting/docker-pgrouting project, it's an intentional design pattern to list abbreviated version numbers (e.g., 3.8) in the README documentation for readability, while using full semantic versions (e.g., 3.8.0) in the actual Docker image tags, version.txt files, and docker-compose.yml files.
📚 Learning: 2025-05-02T14:13:52.206Z
Learnt from: sanak
Repo: pgRouting/docker-pgrouting PR: 69
File: README.md:26-30
Timestamp: 2025-05-02T14:13:52.206Z
Learning: In the pgRouting/docker-pgrouting project, it's an intentional design pattern to list abbreviated version numbers (e.g., 3.8) in the README documentation for readability, while using full semantic versions (e.g., 3.8.0) in the actual Docker image tags, version.txt files, and docker-compose.yml files.
Applied to files:
16-3.5-develop/extra/Dockerfile14-3.5-4.0/README.md14-3.5-3.7/extra/Dockerfile18-3.6-main/README.md18-3.6-3.8/Dockerfile15-3.5-develop/extra/Dockerfile17-3.5-4.0/extra/Dockerfile18-3.6-3.8/README.md18-3.6-4.0/docker-compose.yml15-3.5-4.0/Dockerfile15-3.5-main/extra/Dockerfile18-3.6-develop/docker-compose.ymlextra/Dockerfile.template16-3.5-4.0/docker-compose.yml18-3.6-develop/Dockerfile14-3.5-4.0/Dockerfile18-3.6-4.0/extra/Dockerfile18-3.6-main/DockerfileREADME.md17-3.5-main/extra/Dockerfile18-3.6-main/docker-compose.yml16-3.5-3.8/extra/Dockerfile15-3.5-3.7/extra/Dockerfile18-3.6-4.0/README.md18-3.6-3.7/Dockerfile18-3.6-3.7/docker-compose.yml14-3.5-4.0/docker-compose.yml18-3.6-3.7/extra/Dockerfile14-3.5-3.8/extra/Dockerfile17-3.5-3.7/extra/Dockerfile16-3.5-main/extra/Dockerfile14-3.5-main/extra/Dockerfile17-3.5-3.8/extra/Dockerfile18-3.6-3.8/extra/Dockerfile15-3.5-4.0/README.mdupdate.sh18-3.6-4.0/Dockerfile18-3.6-main/extra/Dockerfile14-3.5-4.0/extra/Dockerfile18-3.6-develop/README.md.github/workflows/main.yml16-3.5-4.0/README.md17-3.5-4.0/Dockerfile16-3.5-4.0/extra/Dockerfile17-3.5-develop/extra/Dockerfile17-3.5-4.0/README.md18-3.6-develop/extra/Dockerfile14-3.5-develop/extra/Dockerfile15-3.5-4.0/extra/Dockerfile18-3.6-3.7/README.md18-3.6-3.8/docker-compose.yml16-3.5-3.7/extra/Dockerfile17-3.5-4.0/docker-compose.yml15-3.5-3.8/extra/Dockerfile16-3.5-4.0/Dockerfile15-3.5-4.0/docker-compose.yml
🪛 Shellcheck (0.11.0)
update.sh
[warning] 29-29: defaultPostgisDebPkgNameVersionSuffix appears unused. Verify use (or export if used externally).
(SC2034)
[warning] 30-30: postgisDebPkgNameVersionSuffixes appears unused. Verify use (or export if used externally).
(SC2034)
🔇 Additional comments (65)
14-3.5-4.0/version.txt (1)
1-1: LGTM!The version string follows the project's established naming convention with full semantic versioning. Based on learnings, this is the expected format for version.txt files.
14-3.5-4.0/docker-compose.yml (1)
3-3: LGTM!The image tag
14-3.5-4.0.0is consistent with the corresponding version.txt file and follows the project's naming convention.17-3.5-4.0/version.txt (1)
1-1: LGTM!Version string is consistent with the project's established naming convention.
18-3.6-main/version.txt (1)
1-1: LGTM!The version string appropriately uses "main" suffix to indicate this image tracks the pgRouting main branch, consistent with the development branch naming pattern used elsewhere in the project.
14-3.5-develop/extra/Dockerfile (2)
27-32: The osmium tool build path is valid for osm2pgrouting 3.0.0.The
tools/osmium/directory exists in the 3.0.0 release and includes CMakeLists.txt and all necessary build infrastructure (cmake subdirectory, src, include). The build commands will execute correctly.
5-7: libpqxx-6.4 is compatible with osm2pgrouting 3.0.0. Debian packaging for osm2pgrouting 3.0.0 explicitly uses libpqxx-6.4, and the osm2pgrouting CMakeLists.txt supports both libpqxx 6.x and 7.x versions. No dependency change needed.17-3.5-3.7/extra/Dockerfile (1)
3-3: LGTM!The osm2pgrouting version bump to 3.0.0 is consistent with the template and other Dockerfiles in this PR.
16-3.5-4.0/version.txt (1)
1-1: LGTM!The version string
16-3.5-4.0.0follows the project's established pattern, using the full semantic version for pgRouting as expected. Based on learnings, this is consistent with the intentional design pattern for version.txt files.16-3.5-main/extra/Dockerfile (1)
3-3: LGTM!The osm2pgrouting version bump to 3.0.0 is consistent across this PR's changes.
16-3.5-4.0/docker-compose.yml (1)
1-11: LGTM!The docker-compose configuration correctly uses the full semantic version
16-3.5-4.0.0for the image tag, which is consistent with the version.txt file and the project's established conventions. Based on learnings, this follows the intentional design pattern where abbreviated versions are used in directory names while full semantic versions are used in Docker image tags.extra/Dockerfile.template (1)
3-3: Version bump to osm2pgrouting 3.0.0 is compatible with the build environment.The release is legitimate (published 2025-11-01) and the required build dependencies (cmake >= 3.12, boost, expat, osmium2) are already included in the Dockerfile. Note that osm2pgrouting 3.0.0 introduces breaking schema changes: the
waystableidcolumn now uses identity generation (previouslygid), and the geometry column name must begeom. These changes affect downstream database schemas but do not impact the Docker image build itself.17-3.5-main/extra/Dockerfile (1)
3-3: LGTM!Consistent osm2pgrouting 3.0.0 version bump matching other variants in this PR.
15-3.5-develop/extra/Dockerfile (1)
3-3: LGTM!Consistent osm2pgrouting 3.0.0 version bump for the pg15 develop variant.
16-3.5-develop/extra/Dockerfile (1)
3-3: LGTM!Consistent osm2pgrouting 3.0.0 version bump for the pg16 develop variant.
18-3.6-main/README.md (1)
1-3: LGTM!Clear and concise documentation for the new pg18/PostGIS 3.6 variant. The abbreviated version format follows the project's established documentation pattern. Based on learnings, this is intentional for readability while full semantic versions are used in actual image tags.
16-3.5-3.7/extra/Dockerfile (1)
3-3: Version bump to osm2pgrouting 3.0.0 is compatible with libpqxx-6.4.Verified that osm2pgrouting 3.0.0 explicitly handles PQXX versions 6.x and 7.x in its CMakeLists.txt. For PQXX < 7.0.0 (which includes libpqxx-6.4), it applies the
-DPQXX_DISCONNECTflag and C++14 standard, ensuring compatibility. No minimum PQXX version is enforced, so the existing libpqxx-6.4 dependency is appropriate.14-3.5-4.0/extra/Dockerfile (1)
1-3: LGTM – New extra Dockerfile for pgRouting 4.0.The base image tag
14-3.5-4.0.0correctly follows the project's full semantic versioning convention for Docker image tags. The osm2pgrouting 3.0.0 upgrade aligns with the other Dockerfiles in this PR.14-3.5-3.8/extra/Dockerfile (1)
3-3: LGTM – Consistent osm2pgrouting version bump.The upgrade to 3.0.0 is consistent with the other extra Dockerfiles in this PR.
17-3.5-develop/extra/Dockerfile (1)
3-3: LGTM – Consistent osm2pgrouting version bump.The upgrade to 3.0.0 aligns with the broader osm2pgrouting version update across this PR.
18-3.6-develop/Dockerfile (2)
1-1: Base image verified.The
postgis/postgis:18-3.6tag is available on Docker Hub. No issues identified.
10-16: The boost 1.83.0 packages are available in Debian Trixie, which is the base OS forpostgis/postgis:18-3.6. All specified packages (libboost-atomic1.83.0,libboost-chrono1.83.0,libboost-graph1.83.0,libboost-date-time1.83.0,libboost-program-options1.83.0,libboost-system1.83.0,libboost-thread1.83.0) are packaged under Debian's SONAME-based naming convention and will be resolvable via apt.17-3.5-4.0/README.md (1)
1-3: LGTM!The README correctly documents the new pgRouting 4.0.0 image for PostgreSQL 17 with PostGIS 3.5. The format is consistent with other version-specific READMEs in the repository.
15-3.5-3.8/extra/Dockerfile (1)
3-3: LGTM!The osm2pgrouting version bump to 3.0.0 aligns with the broader update across all extra Dockerfiles in this PR.
17-3.5-3.8/extra/Dockerfile (1)
3-3: LGTM!Consistent osm2pgrouting 3.0.0 update matching the other extra Dockerfiles in this PR.
15-3.5-3.7/extra/Dockerfile (1)
3-3: LGTM!Consistent osm2pgrouting 3.0.0 update. The upgrade applies uniformly across all pgRouting version variants.
16-3.5-4.0/extra/Dockerfile (1)
1-3: LGTM!Base image and osm2pgrouting version updates are consistent with PR objectives for adding pgRouting 4.0 support. The osm2pgrouting 3.0.0 release is stable and accessible.
15-3.5-main/extra/Dockerfile (1)
3-3: LGTM - osm2pgrouting version upgrade.The upgrade to
OSM2PGROUTING_VERSION=3.0.0is consistent with the coordinated version bump across all extra Dockerfiles in this PR.15-3.5-4.0/extra/Dockerfile (1)
1-3: LGTM - Consistent version updates.Base image correctly updated to
15-3.5-4.0.0andOSM2PGROUTING_VERSIONset to3.0.0, aligning with the PR's objective to add pgRouting 4.0 and osm2pgrouting 3.0 support.17-3.5-4.0/Dockerfile (2)
8-50: LGTM - Build process follows established pattern.The build steps correctly:
- Install Boost 1.74.0 runtime dependencies
- Install build tools and development packages
- Download, verify, and build pgRouting from source
- Clean up build dependencies to minimize image size
- Mark
postgresql-17as manually installed to prevent removal
5-6: SHA256 hash for pgRouting 4.0.0 is correct.The hash
ae87d30652b4a7824509e2652e02bde19e1a42c37906cdf1824b5df40af0bfd0matches the official pgRouting v4.0.0 release.14-3.5-3.7/extra/Dockerfile (1)
3-3: LGTM - osm2pgrouting version upgrade.The upgrade to
OSM2PGROUTING_VERSION=3.0.0is consistent with the coordinated version bump across all extra Dockerfiles. This applies osm2pgrouting 3.0 to the pgRouting 3.7 image as well.17-3.5-4.0/extra/Dockerfile (1)
1-3: Version updates are consistent with the coordinated upgrade across Dockerfiles.The base image correctly references the new
17-3.5-4.0.0tag, andOSM2PGROUTING_VERSIONis appropriately updated to3.0.0. The osm2pgrouting 3.0.0 release aligns with pgRouting 4.0 support and was released as a coordinated upgrade. Note that osm2pgrouting 3.0.0 introduces schema changes (newways/ways_vertices_pgrstructure andgeomcolumn naming), so users should review the release notes to account for these breaking changes if upgrading from earlier versions.18-3.6-3.8/Dockerfile (1)
1-51: Well-structured Dockerfile for PostgreSQL 18 support.The Dockerfile correctly:
- Uses the new
postgis/postgis:18-3.6base image- Updates Boost libraries to 1.83.0 (appropriate for newer base images)
- Uses
apt-mark manual postgresql-18to prevent accidental removal during cleanup- Includes SHA256 verification for the pgRouting tarball
- Properly cleans up build dependencies to minimize image size
18-3.6-3.7/Dockerfile (1)
1-51: LGTM!This Dockerfile follows the established pattern correctly:
- Proper base image selection for PostgreSQL 18
- Boost 1.83.0 dependencies aligned with the base image
apt-mark manual postgresql-18correctly prevents accidental removal- SHA256 verification ensures tarball integrity
17-3.5-4.0/docker-compose.yml (1)
1-11: LGTM!The docker-compose configuration follows project conventions:
- Full semantic version
17-3.5-4.0.0in the image tag (as per project's documented pattern)- Standard service configuration with port mapping and persistent volume
- Minimal and functional setup appropriate for development/testing
Based on learnings, this correctly uses full semantic versions in docker-compose.yml files while abbreviated versions are used in README documentation.
18-3.6-4.0/Dockerfile (1)
1-51: LGTM!The Dockerfile correctly sets up pgRouting 4.0.0 with PostgreSQL 18 and PostGIS 3.6. The boost library versions (1.83.0) are appropriate for Debian trixie, SHA256 verification is in place for source integrity, and build artifacts are properly cleaned up to minimize image size.
14-3.5-4.0/Dockerfile (1)
5-6: LGTM!The pgRouting version and SHA256 hash are correctly updated to 4.0.0. The boost library versions (1.74.0) remain appropriate for the Debian bullseye base image used with PostgreSQL 14.
18-3.6-main/extra/Dockerfile (1)
1-45: LGTM on the osm2pgrouting 3.0.0 upgrade.The osm2pgrouting version update and libpqxx-7.10 dependency are consistent with the Debian trixie base. Build and cleanup steps are properly structured.
update.sh (2)
54-63: LGTM on Debian trixie handling.The new conditional branch correctly sets boost version to 1.83.0 and pqxx version to 7.10 for trixie, which aligns with the package versions available in Debian trixie and the changes in the PostgreSQL 18 Dockerfiles.
29-38: Unused variables flagged by static analysis require verification.The variables
defaultPostgisDebPkgNameVersionSuffixandpostgisDebPkgNameVersionSuffixesappear to be defined but potentially unused in the script. Verify that these variables are not referenced elsewhere in the codebase before removing them, or document their intended future use if they are placeholders for upcoming functionality.18-3.6-3.8/version.txt (1)
1-1: LGTM!The version string follows the project's convention of using full semantic versions in version.txt files. Based on learnings, this is the intentional design pattern.
18-3.6-3.7/version.txt (1)
1-1: LGTM!Version string correctly specifies PostgreSQL 18, PostGIS 3.6, and pgRouting 3.7.3 using the full semantic version format.
15-3.5-4.0/version.txt (1)
1-1: LGTM!Version string correctly specifies PostgreSQL 15, PostGIS 3.5, and pgRouting 4.0.0 following the project's versioning conventions.
18-3.6-4.0/version.txt (1)
1-1: LGTM!The version string follows the established project convention of using full semantic versions in version.txt files. Based on learnings, this pattern is intentional.
18-3.6-develop/version.txt (1)
1-1: LGTM!The version string correctly identifies this as a development branch configuration for PostgreSQL 18 with PostGIS 3.6.
18-3.6-develop/docker-compose.yml (1)
3-3: LGTM!The image tag correctly references the develop branch image and is consistent with the version.txt in the same directory.
18-3.6-main/docker-compose.yml (1)
3-3: LGTM!The image tag correctly references the main branch image for PostgreSQL 18 with PostGIS 3.6.
15-3.5-4.0/docker-compose.yml (1)
3-3: LGTM!The image tag uses the full semantic version as expected per project conventions. Based on learnings, this pattern is intentional for docker-compose.yml files.
18-3.6-develop/README.md (1)
1-3: LGTM! Documentation accurately reflects the develop branch configuration.The README correctly documents the develop version built over Postgres 18/PostGIS 3.6, which aligns with the directory name
18-3.6-developand the PR objectives to add PostgreSQL 18 support.Note: The AI-generated summary claims "Removed documentation content" and mentions "Postgres 13/PostGIS 3.5", but the actual code shows this is a new file documenting Postgres 18/PostGIS 3.6.
15-3.5-4.0/README.md (1)
1-3: LGTM! Clear and consistent documentation.The README accurately documents pgRouting 4.0.0 with PostgreSQL 15 and PostGIS 3.5, matching the directory structure and following the same pattern as other version-specific READMEs in this PR.
18-3.6-3.7/README.md (1)
1-3: LGTM! Documentation is accurate and well-structured.The README correctly documents pgRouting 3.7.3 with PostgreSQL 18 and PostGIS 3.6, aligning with the directory naming convention.
18-3.6-3.8/README.md (1)
1-3: LGTM! Documentation follows the established pattern.The README properly documents pgRouting 3.8.0 with PostgreSQL 18 and PostGIS 3.6, maintaining consistency with the directory structure and other version READMEs.
18-3.6-4.0/README.md (1)
1-3: LGTM!The README correctly documents the new pgRouting 4.0.0 image for PostgreSQL 18 with PostGIS 3.6, following the project's established documentation pattern.
18-3.6-3.7/docker-compose.yml (1)
1-11: LGTM!The docker-compose.yml follows the project's established pattern, using the full semantic version (3.7.3) in the image tag as expected. The configuration is consistent with other compose files in the repository.
18-3.6-3.8/docker-compose.yml (1)
1-11: LGTM!The docker-compose.yml correctly references the 18-3.6-3.8.0 image tag, matching the directory structure. The configuration follows the project's established pattern.
15-3.5-4.0/Dockerfile (1)
5-6: LGTM!The version and SHA256 are consistent with the other pgRouting 4.0.0 Dockerfiles, and the PostgreSQL 15-specific references (base image, apt-mark) are correct.
16-3.5-4.0/Dockerfile (1)
5-6: Version and SHA256 for pgRouting 4.0.0 are correct.The SHA256 checksum matches the official pgRouting 4.0.0 release.
18-3.6-4.0/docker-compose.yml (1)
1-11: LGTM!The docker-compose configuration follows the project's established patterns. The image tag uses the full semantic version (
18-3.6-4.0.0) as expected per project conventions. The hardcodedPOSTGRES_PASSWORD=postgresis acceptable for local development/testing purposes.18-3.6-develop/extra/Dockerfile (1)
1-45: LGTM!This Dockerfile is consistent with the
18-3.6-4.0/extra/Dockerfilestructure, appropriately using the develop base image. The osm2pgrouting version and build process are identical, which is expected since these are generated from templates.README.md (1)
26-54: Version entries look good.The new version entries follow the established format and use abbreviated versions (e.g.,
4.0,3.8) in the documentation as expected per project conventions, while the Docker image tags reference full semantic versions. Based on learnings, this is the intentional design pattern for this project.18-3.6-3.7/extra/Dockerfile (1)
1-45: LGTM!This Dockerfile maintains consistency with the other extra Dockerfiles in this PR. The base image correctly references
18-3.6-3.7.3, and the osm2pgrouting version is updated to 3.0.0 as expected.18-3.6-4.0/extra/Dockerfile (1)
1-45: Dockerfile structure looks good.The single RUN command with chained operations is a good practice for minimizing Docker layers. The separation of runtime dependencies (
libpqxx-7.10) from build dependencies, followed by cleanup of build tools, keeps the final image size minimal.The osm2pgrouting v3.0.0 release is available and the tarball download will work as expected in the Dockerfile. The commented-out osmium tools build (lines 27-32) is understood to be WIP per the PR description.
18-3.6-3.8/extra/Dockerfile (2)
1-3: Base image and version configuration looks good.The base image uses the full semantic version
18-3.6-3.8.0which aligns with the project's convention of using abbreviated versions in folder names but full versions in image tags. Based on learnings, this is intentional design.
33-45: Cleanup section follows Docker best practices.The cleanup correctly:
- Removes source files from
/usr/local/src- Purges build-time dependencies while preserving runtime dependencies (
libpqxx-7.10,libexpat1)- Cleans apt cache to minimize image size
.github/workflows/main.yml (1)
19-33: Matrix configuration is correct and all required version folders exist.The exclusion rules properly enforce:
- PostgreSQL 14–17 paired only with PostGIS 3.5
- PostgreSQL 18 paired only with PostGIS 3.6
All 25 expected version combination directories are present in the repository (14-17 with 3.5, and 18 with 3.6, each paired with pgrouting versions 3.7, 3.8, 4.0, main, and develop). CI jobs will execute without missing directory errors.
| FROM pgrouting/pgrouting:14-3.5-develop | ||
|
|
||
| ENV OSM2PGROUTING_VERSION=2.3.8 | ||
| ENV OSM2PGROUTING_VERSION=3.0.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🌐 Web query:
osm2pgrouting v3.0.0 release GitHub pgRouting
💡 Result:
osm2pgrouting v3.0.0 was released — highlights:
- Requires cmake >= 3.12 and changes the geometry column name to geom. [1]
- New "ways" table structure (id as bigint identity, geom geometry(LineString,4326), new/renamed columns such as length_m, source_osm/target_osm, etc.). [1]
- New "ways_vertices_pgr" structure (id identity, in_edges/out_edges bigint[], stored x/y numeric, geom geometry(Point,4326)). [1]
- Announcement/notes also referenced on release trackers and pgRouting/OSGeo discussion. [2][3]
Sources: GitHub release notes for v3.0.0. [1] Additional release summary/trackers. [2][3]
🏁 Script executed:
#!/bin/bash
# Check osm2pgrouting GitHub repository for v3.0.0 release
# Using curl instead of gh CLI since gh might not be available
echo "=== Checking osm2pgrouting releases via GitHub API ==="
curl -s "https://api.github.com/repos/pgRouting/osm2pgrouting/releases" | jq -r '.[] | "\(.tag_name) - \(.published_at)"' | head -20
echo ""
echo "=== Checking specifically for v3.0.0 ==="
curl -s "https://api.github.com/repos/pgRouting/osm2pgrouting/releases/tags/v3.0.0" | jq -r '.tag_name // "NOT FOUND"'
echo ""
echo "=== Checking osm2pgrouting repository tags ==="
curl -s "https://api.github.com/repos/pgRouting/osm2pgrouting/tags" | jq -r '.[] | .name' | head -20Repository: pgRouting/docker-pgrouting
Length of output: 1229
🏁 Script executed:
#!/bin/bash
# Check if tools/osmium directory exists in v3.0.0
echo "=== Checking tools/osmium in v3.0.0 ==="
curl -s "https://api.github.com/repos/pgRouting/osm2pgrouting/contents/tools/osmium?ref=v3.0.0" | jq -r '.name // "NOT FOUND"'
echo ""
echo "=== Checking osm2pgrouting 3.0.0 CMakeLists.txt for build requirements ==="
curl -s "https://raw.githubusercontent.com/pgRouting/osm2pgrouting/v3.0.0/CMakeLists.txt" | head -50
echo ""
echo "=== Checking osm2pgrouting 3.0.0 README for dependencies ==="
curl -s "https://raw.githubusercontent.com/pgRouting/osm2pgrouting/v3.0.0/README.md" | head -80Repository: pgRouting/docker-pgrouting
Length of output: 3879
🏁 Script executed:
#!/bin/bash
# Read the Dockerfile to see the actual build steps
echo "=== Reading 14-3.5-develop/extra/Dockerfile ==="
cat -n "14-3.5-develop/extra/Dockerfile"Repository: pgRouting/docker-pgrouting
Length of output: 1506
Remove tools/osmium build steps—this directory no longer exists in osm2pgrouting v3.0.0.
The tools/osmium directory was removed in v3.0.0 (released 2025-11-01). Lines 27-32 will cause the build to fail. The osm2pgrouting 3.0.0 build itself (lines 22-26) is compatible with the specified dependencies (cmake >= 3.12, libpqxx-6.4, boost, expat, libosmium2) and should complete successfully without the osmium tool build steps.
Affected lines
&& cd ../tools/osmium/ \
&& mkdir build \
&& cd build \
&& cmake .. \
&& make \
&& make install \
🤖 Prompt for AI Agents
In @14-3.5-develop/extra/Dockerfile at line 3, The Dockerfile sets ENV
OSM2PGROUTING_VERSION but still includes an obsolete build block for
tools/osmium; remove the entire tools/osmium build step (the sequence starting
with "cd ../tools/osmium" through "make install") so the image builds against
osm2pgrouting v3.0.0 without trying to build the removed tools/osmium directory;
keep the existing osm2pgrouting build steps (the cmake/make sequence for
osm2pgrouting) and ensure no other references to tools/osmium remain.
| FROM pgrouting/pgrouting:14-3.5-main | ||
|
|
||
| ENV OSM2PGROUTING_VERSION=2.3.8 | ||
| ENV OSM2PGROUTING_VERSION=3.0.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
# Check if osm2pgrouting 3.0.0 release exists
curl -s "https://api.github.com/repos/pgRouting/osm2pgrouting/releases/tags/v3.0.0" | jq -r 'if .message then .message else "\(.tag_name) - Published: \(.published_at)" end'
# Also check the releases list to see available versions
curl -s "https://api.github.com/repos/pgRouting/osm2pgrouting/releases?per_page=10" | jq -r '.[].tag_name' | head -20Repository: pgRouting/docker-pgrouting
Length of output: 180
🌐 Web query:
osm2pgrouting 3.0.0 release compatibility pgRouting
💡 Result:
osm2pgrouting 3.0.0 is the release that accompanies pgRouting 4.0.0 and is intended to be used with pgRouting 4.x (dependency shown as pgRouting 4.0.0). [1][2][3]
Sources:
- pgRouting/osm2pgrouting repository (release/README). [1]
- Homebrew formula showing osm2pgrouting 3.0.0 depends on pgrouting 4.0.0. [2]
- pgRouting release announcement listing pgRouting 4.0.0 and osm2pgrouting 3.0.0 together. [3]
Version incompatibility: osm2pgrouting 3.0.0 requires pgRouting 4.x, but the base image uses pgRouting 3.5.
osm2pgrouting 3.0.0 is designed for and depends on pgRouting 4.0.0+. The base image 14-3.5-main provides pgRouting 3.5, which is incompatible with this version. Either downgrade to osm2pgrouting 2.3.9 (the latest 2.x release) or update the base image to pgRouting 4.x.
| FROM pgrouting/pgrouting:16-3.5-3.8.0 | ||
|
|
||
| ENV OSM2PGROUTING_VERSION=2.3.8 | ||
| ENV OSM2PGROUTING_VERSION=3.0.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🌐 Web query:
osm2pgrouting 3.0.0 breaking changes release notes
💡 Result:
Summary of breaking changes in osm2pgrouting 3.0.0
- Build: requires CMake >= 3.12. [1]
- Geometry column renamed from the_geom to geom (geometry column name: geom). [1]
- "ways" table reworked (column changes: gid→id (identity), added/renamed columns such as osm_id, tag_id, length_m, source_osm/target_osm, cost/reverse_cost/cost_s/reverse_cost_s, rule, one_way/oneway, x1/y1/x2/y2, maxspeed_forward/backward, priority, geom geometry(LineString,4326), etc.). [1]
- "ways_vertices_pgr" table restructured: id (identity), new in_edges and out_edges bigint[] columns, x and y as numeric(11,8) (stored from geom), osm_id, geom geometry(Point,4326). [1]
- General schema/column name and table-structure incompatibilities with pre-3.x databases (migration required). [1][2]
Sources: release notes / changelog for osm2pgrouting 3.0.0. [1] NewReleases summary of v3.0.0; [2] Debian package metadata showing upstream 3.0.0.
🏁 Script executed:
cd 16-3.5-3.8/extra && cat -n DockerfileRepository: pgRouting/docker-pgrouting
Length of output: 1456
osm2pgrouting 3.0.0 upgrade requires breaking change documentation.
The version upgrade is appropriate and the build process is compatible with 3.0.0. However, osm2pgrouting 3.0.0 introduces significant breaking changes that require user attention:
- Geometry column renamed from
the_geomtogeom waystable restructured with column renames and additions (gid→id, osm_id, tag_id, etc.)ways_vertices_pgrtable restructured with new columns (in_edges, out_edges)- Databases upgrading from 2.3.8 require schema migration
Ensure the PR or release notes clearly document these breaking changes and provide migration guidance for users.
🤖 Prompt for AI Agents
In @16-3.5-3.8/extra/Dockerfile at line 3, You updated ENV OSM2PGROUTING_VERSION
to 3.0.0 but did not document the breaking changes; update the PR description
and repository release notes (and README or CHANGELOG) to list the breaking
changes for osm2pgrouting 3.0.0—specifically the geometry column rename
(the_geom → geom), ways table restructures and column renames/additions (gid →
id, osm_id, tag_id, etc.), ways_vertices_pgr new columns (in_edges, out_edges),
and that databases upgrading from 2.3.8 require a schema migration—and include
clear migration guidance or links to migration scripts/SQL and any commands
users must run to upgrade their schemas safely.
Supports #74.
Changes proposed in this pull request:
tools/osmiumbuild lines, temporarily (commit: 9fe515a)@pgRouting/admins
Summary by CodeRabbit
New Features
Updates
✏️ Tip: You can customize this high-level summary in your review settings.